////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  gtm_1_0_0.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef GTM_1_0_0_H
#define GTM_1_0_0_H

#include "parametermodule.h"
#include "parameterfilesymboltable.h"
#include "parametertypes.h"
#include "ispglobalelements.h"

#define GTM_1_0_0_NAMESPACE_BEGIN namespace gtm_1_0_0 {
#define GTM_1_0_0_NAMESPACE_END }

GTM_1_0_0_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// gtm10_rgn_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct gtm10_rgn_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// maxval_th
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Lower bound of input Max value, to avoid non-linear mapping small/low dynamic range scenes to full output
    ///                range.
    /// Default Value: 1024
    /// Range:         [0,16383]
    /// Bit Depth:     N/A
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  maxval_th;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// key_min_th
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Key low threshold, constrain the Key to not fall below this to avoid making dark scenes too bright.
    /// Default Value: 8192
    /// Range:         [0,16383]
    /// Bit Depth:     N/A
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  key_min_th;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// key_max_th
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Key high threshold, constrain the Key to not go above this to avoid making bright scenes too dark.
    /// Default Value: 4096
    /// Range:         [0,16383]
    /// Bit Depth:     N/A
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  key_max_th;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// key_hist_bin_weight
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Adjustment for average pixel value within a bin.
    /// Default Value: 0.5
    /// Range:         [0.0 ,1.0]
    /// Bit Depth:     N/A
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  key_hist_bin_weight;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// yout_maxval
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   output max value, should reflect output bit width.
    /// Default Value: 16383
    /// Range:         [0,16383]
    /// Bit Depth:     1u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  yout_maxval;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// minval_th
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   The minimum luma in image is not larger than this threshold. This threshold always keep minimum luma
    ///                smaller than a preset value
    /// Default Value: 128
    /// Range:         [0,1024]
    /// Bit Depth:     N/A
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  minval_th;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// a_middletone
    ///
    /// Tuning Level:  must_tune
    /// Description:   Target middle tone target after GTM
    /// Default Value: 0.12
    /// Range:         [0.0, 1.0]
    /// Bit Depth:     N/A
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  a_middletone;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// middletone_w
    ///
    /// Tuning Level:  must_tune
    /// Description:   GTM strength, affect the target image brightness
    /// Default Value: 1.0
    /// Range:         [0.0, 1.0]
    /// Bit Depth:     N/A
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  middletone_w;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// temporal_w
    ///
    /// Tuning Level:  must_tune
    /// Description:   Temporal filter weight, between 0 and 1, larger value would cause slower adaptation, should be actively
    ///                tuned
    /// Default Value: 0.92
    /// Range:         [0.0, 1.0]
    /// Bit Depth:     N/A
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  temporal_w;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// max_percentile
    ///
    /// Tuning Level:  must_tune
    /// Description:   smaller than the max_percentile of pixels will be used in bHisto.
    /// Default Value: 0.999999
    /// Range:         [0.0, 1.0]
    /// Bit Depth:     N/A
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  max_percentile;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// min_percentile
    ///
    /// Tuning Level:  must_tune
    /// Description:   larger than the min_percentile of pixels will be used in bHisto..
    /// Default Value: 0.000001
    /// Range:         [0.0, 1.0]
    /// Bit Depth:     N/A
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  min_percentile;
    FLOAT                  reserved_1;
    FLOAT                  reserved_2;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// extra_ratio_factor
    ///
    /// Tuning Level:  often_tune
    /// Description:   extra ratio of GTM curve for auto generation
    /// Default Value: 0.25
    /// Range:         [0.0, 8.0]
    /// Bit Depth:     N/A
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  extra_ratio_factor;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// dark_index_range
    ///
    /// Tuning Level:  often_tune
    /// Description:   index range with (extra_ratio+base_ratio) of GTM curve for auto generation
    /// Default Value: 8
    /// Range:         [0, 32]
    /// Bit Depth:     N/A
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  dark_index_range;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// yratio_base_manual_tab
    ///
    /// Tuning Level:  must_tune
    /// Description:   manual yratio base curve
    /// Default Value: 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4096
    /// Range:         [0, 262144]
    /// Bit Depth:     18uQ12
    /// Length:        65
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct yratio_base_manual_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// yratio_base_manual - Array
        ///
        /// Tuning Level:  must_tune
        /// Default Value: 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4096
        /// Length:        65
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT yratio_base_manual[65];
    } yratio_base_manual_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// manual_curve_strength
    ///
    /// Tuning Level:  often_tune
    /// Description:   manual curve strength
    /// Default Value: 1.0
    /// Range:         [0.0, 4.0]
    /// Bit Depth:     N/A
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  manual_curve_strength;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// midlight_threshold_low
    ///
    /// Tuning Level:  often_tune
    /// Description:   ending-point for linear blending to 45 degree line for low light
    /// Default Value: 776
    /// Range:         [0, 16383]
    /// Bit Depth:     14
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  midlight_threshold_low;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// midlight_threshold_high
    ///
    /// Tuning Level:  often_tune
    /// Description:   starting-point for linear blending to 45 degree line for high light
    /// Default Value: 1024
    /// Range:         [0, 16383]
    /// Bit Depth:     14
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  midlight_threshold_high;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lowlight_w
    ///
    /// Tuning Level:  often_tune
    /// Description:   strength for linear blending to 45 degree line for low light
    /// Default Value: 0.0
    /// Range:         [0.0, 1.0]
    /// Bit Depth:     N/A
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  lowlight_w;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// highlight_w
    ///
    /// Tuning Level:  often_tune
    /// Description:   strength for linear blending to 45 degree line for high light
    /// Default Value: 1.0
    /// Range:         [0.0, 1.0]
    /// Bit Depth:     N/A
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  highlight_w;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// max_ratio
    ///
    /// Tuning Level:  often_tune
    /// Description:   max ratio for Yratio
    /// Default Value: 4.0
    /// Range:         [0.0, 16.0]
    /// Bit Depth:     N/A
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  max_ratio;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// luma_peak_th0
    ///
    /// Tuning Level:  often_tune
    /// Description:   luma peak low threshold for histogram stretch
    /// Default Value: 6144
    /// Range:         [0, 16383]
    /// Bit Depth:     14
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  luma_peak_th0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// luma_peak_th1
    ///
    /// Tuning Level:  often_tune
    /// Description:   luma peak high threshold for histogram stretch
    /// Default Value: 8192
    /// Range:         [0, 16383]
    /// Bit Depth:     14
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  luma_peak_th1;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// stretch_gain_0
    ///
    /// Tuning Level:  often_tune
    /// Description:   histogram stretch gain for dark image
    /// Default Value: 1.2
    /// Range:         [1.0, 2.0]
    /// Bit Depth:     N/A
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  stretch_gain_0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// stretch_gain_1
    ///
    /// Tuning Level:  often_tune
    /// Description:   histogram stretch gain for bright image
    /// Default Value: 1.0
    /// Range:         [1.0, 2.0]
    /// Bit Depth:     N/A
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  stretch_gain_1;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_gtm10_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_gtm10_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::trigger_pt_type_aec aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// gtm10_rgn_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    gtm10_rgn_dataType  gtm10_rgn_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_gtm10_hdr_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_gtm10_hdr_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type_aec_hdr hdr_aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct hdr_aec_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_gtm10_aec_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                  mod_gtm10_aec_dataCount;
        UINT32                  mod_gtm10_aec_dataID;
        mod_gtm10_aec_dataType* mod_gtm10_aec_data;
    } hdr_aec_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_gtm10_drc_gain_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_gtm10_drc_gain_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// drc_gain_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type drc_gain_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// drc_gain_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct drc_gain_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_gtm10_hdr_aec_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                      mod_gtm10_hdr_aec_dataCount;
        UINT32                      mod_gtm10_hdr_aec_dataID;
        mod_gtm10_hdr_aec_dataType* mod_gtm10_hdr_aec_data;
    } drc_gain_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_gtm10_coreType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_gtm10_coreType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mod_gtm10_drc_gain_data - Array
    /// Min Length:    1
    /// Max Length:    Unbounded
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32                       mod_gtm10_drc_gain_dataCount;
    UINT32                       mod_gtm10_drc_gain_dataID;
    mod_gtm10_drc_gain_dataType* mod_gtm10_drc_gain_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_gtm10_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_gtm10_reserveType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// v2_enable
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable gtm v2
    /// Default Value: 1
    /// Range:         [0,1]
    /// Bit Depth:     1
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::enable_flag_type v2_enable;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// manual_curve_enable
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable gtm manual curve
    /// Default Value: 0
    /// Range:         [0,1]
    /// Bit Depth:     1
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::enable_flag_type manual_curve_enable;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_gtm10Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_gtm10Type
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Binary file symbol table entry ID
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 SymbolTableID;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// enable_section
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct enable_sectionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        globalelements::enable_flag_type gtm_enable;
    } enable_section;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// module_version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct module_versionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        INT32 major_revision;
        INT32 minor_revision;
        INT32 incr_revision;
    } module_version;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_variables
    ///
    /// Default Value: control_drc_gain, control_aec_exp_sensitivity_ratio, control_lux_idx
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_variablesStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// control_var_type - Array
        /// Default Value: control_drc_gain, control_aec_exp_sensitivity_ratio, control_lux_idx
        /// Length:        3
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        enum class control_var_typeEnum
        {
            control_drc_gain                  = 0,
            control_exp_time_ratio            = 1,
            control_aec_exp_sensitivity_ratio = 2,
            control_lux_idx                   = 3,
            control_gain                      = 4
        } control_var_type[3];
    } control_variables;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_methodStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_exp_control
        /// Default Value: control_lux_idx
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_type     aec_exp_control;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_hdr_control
        /// Default Value: control_aec_exp_sensitivity_ratio
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_hdr_type aec_hdr_control;
    } control_method;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_gtm10_reserve
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_gtm10_reserveType chromatix_gtm10_reserve;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_gtm10_core
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_gtm10_coreType    chromatix_gtm10_core;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_gtm10TypeClass
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class chromatix_gtm10TypeClass : public ParameterModule, public chromatix_gtm10Type
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const UINT16 MAJOR = 1;
    static const UINT16 MINOR = 0;
    static const UINT32 PATCH = 0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Default Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_gtm10TypeClass(
        const CHAR* name);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_gtm10TypeClass(
        const CHAR* name,
        UINT32 modeId,
        UINT16 mode,
        UINT16 subMode,
        UINT32 group);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Destructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ~chromatix_gtm10TypeClass();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// GetName
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const CHAR* GetName(
        const CHAR* type);


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load gtm10_rgn_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadgtm10_rgn_dataType(
        ParameterFileSymbolTableEntry* entry,
        gtm10_rgn_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load gtm10_rgn_dataType_yratio_base_manual_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadgtm10_rgn_dataType_yratio_base_manual_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        gtm10_rgn_dataType::yratio_base_manual_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_gtm10_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_gtm10_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_gtm10_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_gtm10_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_gtm10_hdr_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_gtm10_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_gtm10_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_gtm10_hdr_aec_dataType_hdr_aec_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_gtm10_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_gtm10_drc_gain_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_gtm10_drc_gain_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_gtm10_drc_gain_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_gtm10_drc_gain_dataType_drc_gain_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_gtm10_drc_gain_dataType_drc_gain_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_gtm10_drc_gain_dataType::drc_gain_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_gtm10_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_gtm10_coreType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gtm10_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_gtm10_reserveType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_gtm10_reserveType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gtm10_reserveType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_gtm10Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_gtm10Type(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gtm10Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load enable_sectionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadenable_sectionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gtm10Type::enable_sectionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load module_versionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmodule_versionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gtm10Type::module_versionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_variablesStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_variablesStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gtm10Type::control_variablesStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_methodStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_methodStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gtm10Type::control_methodStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_gtm10_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_gtm10_hdr_aec_dataType(
        mod_gtm10_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_gtm10_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_gtm10_hdr_aec_dataType_hdr_aec_dataStruct(
        mod_gtm10_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_gtm10_drc_gain_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_gtm10_drc_gain_dataType(
        mod_gtm10_drc_gain_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_gtm10_drc_gain_dataType_drc_gain_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_gtm10_drc_gain_dataType_drc_gain_dataStruct(
        mod_gtm10_drc_gain_dataType::drc_gain_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_gtm10_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_gtm10_coreType(
        chromatix_gtm10_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_gtm10Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_gtm10Type(
        chromatix_gtm10Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Parse symbol table entry, and return a new object
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ParameterModule* Parse(
        ParameterSetManager* manager,
        ParameterFileSymbolTableEntry* entry) const;

}; // End class chromatix_gtm10TypeClass

GTM_1_0_0_NAMESPACE_END
#endif // GTM_1_0_0_H

